<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
 <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
 <meta http-equiv="content-style-type" content="text/css" />
 <meta name="author" content="WarpEnterprises, Arlsair" />
 <meta name="date" content="2003-07-09" />
 <title>AssumeFPS / ChangeFPS / ConvertFPS AviSynth Filter</title>
 <link rel="stylesheet" type="text/css" href="../../style.css" />
 <style type="text/css">td {vertical-align:top;}</style>
</head><body>
<h3><a name="AssumeFPS"></a>AssumeFPS</h3>

<tt>AssumeFPS(</tt><i>clip, float fps, bool &quot;sync_audio&quot;</i><tt>)</tt><br />
<tt>AssumeFPS(</tt><i>clip, int numerator [, int denominator], bool &quot;sync_audio&quot;</i><tt>)</tt><br />
<br />
<tt>AssumeFPS</tt> &auml;ndert die Framerate, ohne die Frameanzahl zu &auml;ndern. Das Video wird also schneller bzw. langsamer abgespielt, es wird lediglich die Framerate ver&auml;ndert.<br />
<br />
<table border="0" cellspacing="5">
 <tr><th colspan="2"><b>Parameter:</b></th></tr>
 <tr><td><i>fps</i></td><td>Gibt die neue Framerate als Dezimalzahl an.</td></tr>
 <tr><td><i>numerator</i></td><td>Gibt die neue Framerate als Ganzzahl. Die Framerate kann noch durch <i>denominator</i> ver&auml;ndert werden.</td></tr>
 <tr><td><i>denominator</i></td><td>Man kann hiermit die Framerate noch &auml;ndern. Die tats&auml;liche Framerate ergibt sich nach <tt>Framerate = numerator / denominator</tt>.</td></tr>
 <tr><td><i>sync_audio</i></td><td>Mit <i>sync_audio=true</i> wird auch die Samplingrate vom Ton entsprechend ver&auml;ndert, damit die Spieldauer vom Ton gleich der des Videos ist. Die Tonh&ouml;he &auml;ndert sich dadurch.<br />
                                   Kann auch dazu eingesetzt werden, nur die Samplingrate des Tones zu &auml;ndern, wenn der Quellclip keine Videospur enth&auml;lt.</td></tr>
</table>
<br />
<table border="0" cellspacing="5">
 <tr><th colspan="2"><b>Beispiele:</b></th></tr>
 <tr><td><tt>AssumeFPS(50.0)</tt></td><td>Beschleunigt ein PAL Video auf die doppelte Framerate</td></tr>
 <tr><td><tt>AssumeFPS(30000,1001)</tt></td><td>&Auml;ndert die Framerate auf 29,97 fps</td></tr>
</table>
<br />
<table border="0" cellspacing="5">
 <tr><th colspan="2"><b>Changelog:</b></th></tr>
</table>
<br />
<hr />
<br />
<h3><a name="ChangeFPS"></a>ChangeFPS</h3>

<tt>ChangeFPS(</tt><i>clip, float fps [, bool linear]</i><tt>)</tt><br />
<tt>ChangeFPS(</tt><i>clip, int numerator [, int denominator, bool linear]</i><tt>)</tt><br />
<br />
Dieses Filter &auml;ndert die Framerate, indem Frames gel&ouml;scht oder dupliziert werden.<br />
<br />
<table border="0" cellspacing="5">
 <tr><th colspan="2"><b>Parameter:</b></th></tr>
 <tr><td><i>fps</i></td><td>Gibt die neue Framerate als Dezimalzahl an.</td></tr>
 <tr><td><i>numerator</i></td><td>Gibt die neue Framerate als Ganzzahl. Die Framerate kann noch durch <i>denominator</i> ver&auml;ndert werden.</td></tr>
 <tr><td><i>denominator</i></td><td>Man kann hiermit die Framerate noch &auml;ndern. Die tats&auml;liche Framerate ergibt sich nach <tt>Framerate = numerator / denominator</tt>.</td></tr>
 <tr><td><i>linear</i></td><td>Hiermit fragt AviSynth die Frames linear nacheinander ab, wenn Frames &uuml;bergangen werden. Standard ist <i>true</i>.</td></tr>
</table>

<br />
<table border="0" cellspacing="5">
 <tr><th colspan="2"><b>Beispiele:</b></th></tr>
 <tr><td><tt>ChangeFPS(29.97)</tt></td><td>&Auml;ndert die Framerate auf 29,97 fps</td></tr>
 <tr><td><tt>ChangeFPS(30000,1001)</tt></td><td>Alternative Syntax zum obigen Beispiel</td></tr>
</table>
<br />
<table border="0" cellspacing="5">
 <tr><th colspan="2"><b>Changelog:</b></th></tr>
 <tr><td>v2.54</td><td>Der optionale Parameter <i>linear=true/false</i> wurde hinzugef&uuml;gt</td></tr>
 <tr><td>v2.06</td><td>Anstatt das Video zu beschneiden oder aufzugef&uuml;llen, um die Spieldauer und Abspielgeschwindigkeit (die Anzahl der Frames wird nicht ver&auml;ndert) zu erhalten, wird nun die Anzahl der Frames erh&ouml;ht oder vermindert wie bei <tt>ConvertFPS</tt>.<br /></td></tr>
</table>
<br />
<hr />
<br />
<h3><a name="ConvertFPS"></a>ConvertFPS</h3>

<tt>ConvertFPS(</tt><i>clip, float new_rate, int &quot;zone&quot;, int &quot;vbi&quot;</i><tt>)</tt><br />
<br />
Ben&ouml;tigt als Quelle YUY2 oder RGB.<br />
<br />
Der Filter versucht, die Framerate von <i>clip</i> zu <i>new_rate</i> zu konvertieren ohne das Weglassen oder Dublizieren von Frames. Dadurch wird eine weiche Konvertierung, &auml;hnlich der von Konverter-Hardware, erzielt. Das Ergebnis wird (fast) die gleiche Filml&auml;nge haben wie <i>clip</i>, aber die Anzahl der Frames wird ge&auml;ndert entsprechend dem Verh&auml;ltnis aus Quell- und Ziel-Framerate.<br />
<br />
Der Filter hat zwei Modi. Falls das optimale Argument <i>zone</i> nicht angegeben ist, werden angrenzende Frames gemischt, wobei diese Mischung mit dem zeitlichen Abstand der beiden Frames zum Zielframe gewichtet wird (&quot;Mischen&quot; Modus). Wenn <i>zone</i> angegeben ist, wird immer von einem Frame zum n&auml;chsten umgeschaltet, wenn der neue Zielframe beginnt (&quot;Schalten&quot; Modus), das hei&szlig;t irgendwo in der Mitte des Zielframes. Dabei wird angenommen, dass das Bild auf einem TV betrachtet wird (nicht auf einem PC!)und jeder Frame von oben nach unten abgetastet wird. Der Parameter <i>zone</i> gibt die Breite der &Uuml;bergangsregion an, in der die zwei Frames gemischt werden (um scharfkantige &Uuml;berg&auml;nge zu vermeiden).<br />
<br />
Der Modus &quot;Mischen&quot; erzeugt eine leichte Unsch&auml;rfe bei Bewegungen, was ein typisches Artefakt bei Framerate-Umwandlungen ist (kann auch bei kommerziellen Videos oder TV-Programmen beobachtet werden). Bei interlaced Material muss der Filter auf die einzelnen Felder angewendet werden, nicht auf die interlaced Frames (siehe Beispiel).<br />
<br />
Der Modus &quot;Schalten&quot; ist ein Versuch, diese Unsch&auml;rfe zu vermeiden, allerdings kann ein leichtes Flackern und Bewegungsartefakte entstehen. Besonders Schwenks sind anf&auml;llig daf&uuml;r, da die einzelnen Frames bei Szenen mit Bewegung gebogene oder unterbrochene senkrechte Linien zeigen. Auch Szenenwechsel k&ouml;nnen in der Mitte des Frames sichtbar werden. Trotzdem sieht das Ergebnis weniger unscharf aus.<br />
<br />
Kein Modus ist also perfekt. Welcher der bessere ist, h&auml;ngt vom eigenen Geschmack und dem verwendeten Filmmaterial ab. Der &quot;Schalten&quot; Modus ist wahrscheinlich nur brauchbar, wenn man sich das Ergebnis auf einem Fernseher und nicht auf dem PC ansieht.<br />
<br />
Aufwendigere Framerate-Konvertierungen verwenden Algorithmen zur Bewegungsinterpolation, die schwierig zu erstellen sind, aber dann wesentlich bessere Ergebnisse liefern.<br />
<br />
Filmmaterial sollte nicht mehrfach mit diesem Filter umgewandelt werden. Es kommt schnell zu Unsch&auml;rfen bei mehrfacher Anwendung.<br />
<br />
Der Ton wird nicht ver&auml;ndert, er bleibt synchron, die L&auml;nge des Tones kann sich ganz leicht von der Videol&auml;nge nach der Umwandlung unterscheiden, da das Ergebnis ja eine ganzzahlige Anzahl von Frames haben muss. Dieser Effekt wirkt sich st&auml;rker aus bei kurzen Clips, der entstehende L&auml;ngenunterschied kann aber ignoriert werden.<br />
<br />
<b>Parameter:</b><br />
<table>
 <tr valign="top">
  <td width="80"><i>new_rate</i></td>
  <td>Die Ziel-Framerate (Ganz- oder Dezimalzahl). Im Modus &quot;Mischen&quot; muss <i>new_rate</i> mindestens 2/3 der Quell-Framerate sein. Ansonsten wird ein Fehler ausgegeben. F&uuml;r st&auml;rkeres Herabsetzen der Famerate muss man den Modus &quot;Schalten&quot; verwenden.</td>
 </tr>
 <tr valign="top">
  <td><i>zone</i></td>
  <td>(Optional) Wenn angegeben, wird der Filter im Modus &quot;Schalten&quot; betrieben, der Wert ist eine Ganzzahl gr&ouml;&szlig;er 0. Falls er dennoch auf 0 steht, wird ein Extrem-&quot;Schalten&quot; durchgef&uuml;hrt, d.h. es wird augenblicklich der n&auml;chste Frame vor dem Schalten genommen. Ist der Wert gr&ouml;szlig;er als 0, gibt er die H&ouml;he der Zone an, in der die Frames ineinander &uuml;bergeblendet werden. Ein Wert von 80 ergibt gute Ergebnisse bei Vollbild (480/576 Linien). Der Wert von <i>zone</i> muss kleiner oder gleich der Anzahl der Linien des Ziel-Frames sein, die der Dauer eines Quell-Frames entsprechen. Das sind normalerweise 5/6 oder 6/5 von der Ziel-Frameh&ouml;he, also einige hundert Linien. Ein Fehler wird erzeugt, wenn ein zu gro&szlig;er Wert gew&auml;hlt wird.</td>
 </tr>
 <tr valign="top">
  <td><i>vbi</i></td>
  <td>(Optional) Im Modus &quot;Schalten&quot; wird damit eine Korrektur f&uuml;r die vertikale Austastl&uuml;cke angegeben. Der Wert gibt die H&ouml;he beim Zielframe in Zeilen an, typische Werte sind vbi=49 bei PAL und vbi=45 bei NTSC (der Wert ist nicht kritisch). Wird ignoriert im &quot;Mischen&quot; Modus.</td>
 </tr>
</table>
<br />
<table border="1">
 <tr>
  <td>
   <tt>
    Beispiel NTSC-&gt;PAL Umwandlung:<br />
    <br />
    AVISource("NTSC_clip.avi")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Clip laden<br />
    Bob() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Felder trennen und auf volle H&ouml;he bringen<br />
    BicubicResize(768,576) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Gr&ouml;&szlig;e auf PAL (quadratische Pixel) anpassen<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (f&uuml;r CCIR muss 720,576 verwendet werden)<br />
    ConvertFPS(50) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Feldrate auf PAL wandeln, Modus &quot;Mischen&quot;<br />
    SeparateFields.SelectEvery(4,0,3) # Bob r&uuml;ckg&auml;ngig machen, &quot;Even Field First&quot;.<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectEvery(4,1,2) f&uuml;r &quot;Odd Field first&quot;<br />
    Weave &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # zur&uuml;ckwandeln von Feldern in Frames<br />
    <br />
    Dieses Beispiel funtioniert auch bei frame-basiertem NTSC-Material und telecine-Film.<br />
    Bei Filmmaterial ist aber das Ergebnis bei einem inverse-telecine Filter und einer Anpassung der Framerate von 23.976 auf 25fps besser.
   </tt>
  </td>
 </tr>
</table>
<br />
<table border="0" cellspacing="5">
 <tr><th colspan="2"><b>Changelog:</b></th></tr>
 <tr><td>v1.0b7</td><td>Erstes Release</td></tr>
</table>
<br />
<form action=""><input type="button" value="Zur&uuml;ck" onclick="history.go(-1)" /></form>
</body>
</html>
